home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Tool Chest / Development Tools & Languages / Macintosh Common Lisp Related / Think C interface / lisp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-12  |  775 b   |  39 lines  |  [TEXT/KAHL]

  1. /*
  2.     Internals
  3. */
  4.  
  5. #define ADD(x,n) (((long)(x))+(n))
  6. #define GET(x)   (*((long *)(x)))
  7. #define IND(x,n) (*((long *)ADD(x,n)))
  8. #define CLEAN(x) (((long)(x))&0xFFFFFFF8)
  9.  
  10. /*
  11.     Externals
  12. */
  13.  
  14. #define VECTOR(x)      ((long *)ADD(x,7))
  15. #define CHARACTER(x)   ((char)(((long)(x))>>16))
  16. #define STRUCTURE(x,s) ((struct s *)ADD(x,11))
  17. #define FLOAT(x)       ((short double *)CLEAN(x))
  18. #define STRING(x)      ((char *)ADD(x,7))
  19.  
  20. #define VECTOR_SIZE(x) (IND(x,4)&0x00FFFFFF)
  21. #define STRING_SIZE(x) VECTOR_SIZE(x)
  22.  
  23. #define CAR(x) IND(x,-4)
  24. #define CDR(x) GET(x)
  25.  
  26. #define BOX(x)   (((long)(x))<<3)
  27. #define UNBOX(x) (((long)(x))>>3)
  28.  
  29. /*
  30.     Utilities
  31. */
  32.  
  33. #define RETURN_A0(expr) {                \
  34.     void *_tmp_a0;                        \
  35.     _tmp_a0 = (void *) (expr);            \
  36.     asm { MOVE.L _tmp_a0,a0 };            \
  37.     return;                                \
  38. }
  39.